/**
	Describtion: 根据命名空间动态取得指定的文件，并加载（一次）进来
	author: simplechen
	email: 3gwind@gmail.com
	license: MIT
	url: http://blog.csdn.net/bjbs_270
*/
Ext.ns('G');
G.import = function(){
	if(arguments.length <1) return false;
	var lib = arguments[0];
	var flag = false;//决定是否提交后台进行处理
	var config = {
		url: '/www/js/import.php'
		,method: 'POST'
		,async: false
		,success: function(response, opts){
			eval(response.responseText);
	//		console.log(response.responseText);
	//		console.dir(opts);
		}
		,failure: function(response, opts){
			console.log('server-side failure with status code ' + response.status);
		}
	}

	var aconfig = arguments[1] || false;
	if(false !== aconfig && (Ext.isArray(aconfig) || Ext.isString(aconfig))) aconfig = false;

	if(false !== aconfig) Ext.apply(config,aconfig);

	//开始构造 POST的参数
	var fparams = {};
	
	if(Ext.isString(lib)){
		var tlib = lib.split('.');
		var last = tlib.pop();
		//加载一个目录下面的所有JS文件
		if('*' === last){
			fparams['file'] = lib;//tlib.join('.');
			flag = true;
		} else {
			if(G.isLoad(lib)){
				return false;
			}
			fparams['file'] = lib;
			flag = true;
		}
	} else if(Ext.isArray(lib)){ 
		var rarr = [];
		Ext.each(lib,function(item){
			if(false === G.isLoad(item)) {
				rarr.push(item);
				if(false === flag) flag = true;
			}
		});
		fparams['file[]'] = rarr;
	} else if(Ext.isObject(lib)){
		Ext.iterate(lib,function(key,value){
			if(Ext.isString(value) && false === G.isLoad(key)){
				if(false === flag) flag = true;
				fparams['file['+key+']'] = value;
			} else if(Ext.isArray(value)) {
				var tvalue = [];
				Ext.each(value,function(item){
					if(false === G.isLoad(key+'.'+item)){
						tvalue.push(item);
						if(false === flag) flag = true;
					}
				});
				fparams['file['+key+'][]'] = tvalue;
			} else if(Ext.isObject(value)){
				Ext.iterate(value,function(k,v){
					//if(false === G.import(key+'.'+k))
						fparams['file['+key+']['+k+']']	= v;
				});
			}
		});
	}
	if(flag){
		Ext.apply(config,{params: fparams});
		Ext.Ajax.request(config);
	}
};

G.isLoad = function(){
	var lib = arguments[0] || false;
	if(false === lib) return false;
	var tlib = lib.split('.');
	var module = tlib.shift();	
	var slib = tlib.join('.');
	Ext.ns(slib);
	if('isDefined' in eval(slib))
	{
		return true;
	}
	return false;
};

G.execute = function(){
};
